/*
	NounEnhancementShip.h
	(c)2008 Palestar Inc, Jeff Everett
*/



#ifndef NOUNENHANCEMENTSHIP_H
#define NOUNENHANCEMENTSHIP_H

#include "NounEnhancement.h"

// Minor Ship ---------------------------------------------------------------//

class DLL NounEnhancement_MinorVelocity : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_MinorVelocity();

	CharString GetName() const { return "Minor Engine Tuner";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_MinorThrust : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_MinorThrust();

	CharString GetName() const { return "Minor Engine Booster";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_MinorTurn : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_MinorTurn();

	CharString GetName() const { return "Minor Manuevering Jets";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_MinorArmor : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_MinorArmor();

	CharString GetName() const { return "Minor Armor Upgrade";}
	ApplyType applyType() const { return AT_ATTACH;}
};
class DLL NounEnhancement_MinorShield : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_MinorShield();

	CharString GetName() const { return "Minor Shield Power";}
	ApplyType applyType() const { return AT_ATTACH;}
};

// Limited Ship ---------------------------------------------------------------//

class DLL NounEnhancement_LimitedVelocity : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_LimitedVelocity();

	CharString GetName() const { return "Limited Engine Tuner";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_LimitedThrust : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_LimitedThrust();

	CharString GetName() const { return "Limited Engine Booster";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_LimitedTurn : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_LimitedTurn();

	CharString GetName() const { return "Limited Manuevering Jets";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_LimitedArmor : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_LimitedArmor();

	CharString GetName() const { return "Limited Armor Upgrade";}
	ApplyType applyType() const { return AT_ATTACH;}
};
class DLL NounEnhancement_LimitedShield : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_LimitedShield();
	CharString GetName() const { return "Limited Shield Power";}
	ApplyType applyType() const { return AT_ATTACH;}
};

// Standard Ship ---------------------------------------------------------------//

class DLL NounEnhancement_StandardVelocity : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_StandardVelocity();

	CharString GetName() const { return "Standard Engine Tuner";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_StandardThrust : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_StandardThrust();

	CharString GetName() const { return "Standard Engine Booster";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_StandardTurn : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_StandardTurn();

	CharString GetName() const { return "Standard Manuevering Jets";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_StandardArmor : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_StandardArmor();

	CharString GetName() const { return "Standard Armor Upgrade";}
	ApplyType applyType() const { return AT_ATTACH;}

};
class DLL NounEnhancement_StandardShield : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_StandardShield();

	CharString GetName() const { return "Standard Shield Power";}
	ApplyType applyType() const { return AT_ATTACH;}
};

// Improved Ship ---------------------------------------------------------------//

class DLL NounEnhancement_ImprovedVelocity : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_ImprovedVelocity();

	CharString GetName() const { return "Improved Engine Tuner";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_ImprovedThrust : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_ImprovedThrust();

	CharString GetName() const { return "Improved Engine Booster";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_ImprovedTurn : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_ImprovedTurn();

	CharString GetName() const { return "Improved Manuevering Jets";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_ImprovedArmor : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_ImprovedArmor();

	CharString GetName() const { return "Improved Armor Upgrade";}
	ApplyType applyType() const { return AT_ATTACH;}
};
class DLL NounEnhancement_ImprovedShield : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_ImprovedShield();

	CharString GetName() const { return "Improved Shield Power";}
	ApplyType applyType() const { return AT_ATTACH;}
};

// Enhanced Ship ---------------------------------------------------------------//

class DLL NounEnhancement_EnhancedVelocity : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_EnhancedVelocity();

	CharString GetName() const { return "Enhanced Engine Tuner";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_EnhancedThrust : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_EnhancedThrust();

	CharString GetName() const { return "Enhanced Engine Booster";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_EnhancedTurn : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_EnhancedTurn();

	CharString GetName() const { return "Enhanced Manuevering Jets";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_EnhancedArmor : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_EnhancedArmor();

	CharString GetName() const { return "Enhanced Armor Upgrade";}
	ApplyType applyType() const { return AT_ATTACH;}
};
class DLL NounEnhancement_EnhancedShield : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_EnhancedShield();

	CharString GetName() const { return "Enhanced Shield Power";}
	ApplyType applyType() const { return AT_ATTACH;}
};

// Advanced Ship ---------------------------------------------------------------//

class DLL NounEnhancement_AdvancedVelocity : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_AdvancedVelocity();

	CharString GetName() const { return "Advanced Engine Tuner";}
	ApplyType applyType() const { return AT_ATTACH;}
	Rarity rarity()  const {return RARITY_RARE;}
};

class DLL NounEnhancement_AdvancedThrust : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_AdvancedThrust();

	CharString GetName() const { return "Advanced Engine Booster";}
	ApplyType applyType() const { return AT_ATTACH;}
	Rarity rarity()  const {return RARITY_RARE;}
};

class DLL NounEnhancement_AdvancedTurn : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_AdvancedTurn();

	CharString GetName() const { return "Advanced Manuevering Jets";}
	ApplyType applyType() const { return AT_ATTACH;}
	Rarity rarity()  const {return RARITY_RARE;}
};

class DLL NounEnhancement_AdvancedArmor : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_AdvancedArmor();

	CharString GetName() const { return "Advanced Armor Upgrade";}
	ApplyType applyType() const { return AT_ATTACH;}
	Rarity rarity()  const {return RARITY_RARE;}

};
class DLL NounEnhancement_AdvancedShield : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_AdvancedShield();

	CharString GetName() const { return "Advanced Shield Power";}
	ApplyType applyType() const { return AT_ATTACH;}
	Rarity rarity()  const {return RARITY_RARE;}
};

class DLL NounEnhancement_MakkarShipBooster : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_MakkarShipBooster();

	CharString GetName() const { return "Makkar Ship Booster";}
	ApplyType applyType() const { return AT_ATTACH;}
	dword requirementFlags() const {return REQ_DESTROYER|REQ_CRUISER|REQ_DREAD|REQ_STATION;} 
	Rarity rarity()  const {return RARITY_RARE;}
};

class DLL NounEnhancement_ShipProtector : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_ShipProtector();

	CharString GetName() const { return "Benchford Buish Ship Protector";}
	ApplyType applyType() const { return AT_ATTACH;}
	bool IsUnique() const {return true;}

	dword requirementFlags() const {return REQ_DESTROYER|REQ_CRUISER|REQ_DREAD|REQ_STATION;} 
	Rarity rarity()  const {return RARITY_RARE;}

};

class DLL NounEnhancement_ShipProtectorTwo : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_ShipProtectorTwo();

	CharString GetName() const { return "Zlarr's Defense";}
	ApplyType applyType() const { return AT_ATTACH;}
	bool IsUnique() const {return true;}

	dword requirementFlags() const {return REQ_DESTROYER|REQ_CRUISER|REQ_DREAD|REQ_STATION;} 
	Rarity rarity()  const {return RARITY_RARE;}

};

class DLL NounEnhancement_ShipProtectorThree : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_ShipProtectorThree();

	CharString GetName() const { return "Reek's Defensive Offense Special";}
	ApplyType applyType() const { return AT_ATTACH;}
	bool IsUnique() const {return true;}

	dword requirementFlags() const {return REQ_SCOUT|REQ_TRANSPORT|REQ_ENGINEER|REQ_SUBSCRIBER;} 
	Rarity rarity()  const {return RARITY_RARE;}

};

class DLL NounEnhancement_ShipProtectorFour : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_ShipProtectorFour();

	CharString GetName() const { return "Magnetron Shield MkII";}
	ApplyType applyType() const { return AT_ATTACH;}
	bool IsUnique() const {return true;}

	dword requirementFlags() const {return REQ_SCOUT|REQ_TRANSPORT|REQ_ENGINEER|REQ_SUBSCRIBER;} 
	Rarity rarity()  const {return RARITY_RARE;}

};

class DLL NounEnhancement_ShipProtectorFive : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_ShipProtectorFive();

	CharString GetName() const { return "Magnetron Shield MkII";}
	ApplyType applyType() const { return AT_ATTACH;}
	bool IsUnique() const {return true;}

	dword requirementFlags() const {return REQ_SCOUT|REQ_TRANSPORT|REQ_ENGINEER|REQ_SUBSCRIBER;} 
	Rarity rarity()  const {return RARITY_ULTRA_RARE;}

};

class DLL NounEnhancement_MavericksDefense : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_MavericksDefense();

	CharString GetName() const { return "Maverick's Ultimate Defense";}
	ApplyType applyType() const { return AT_ATTACH;}
	bool IsUnique() const {return true;}

	dword requirementFlags() const {return REQ_ANY|REQ_ADMIN;} 
	Rarity rarity()  const {return RARITY_ULTRA_RARE;}

};

class DLL NounEnhancement_MaxDefense : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_MaxDefense();

	CharString GetName() const { return "Max Defense Mod";}
	ApplyType applyType() const { return AT_ATTACH;}
	bool IsUnique() const {return true;}

	dword requirementFlags() const {return REQ_SCOUT|REQ_FRIGATE|REQ_SUPPLY|REQ_ENGINEER|REQ_TRANSPORT|REQ_DESTROYER|REQ_CRUISER;} 
	Rarity rarity()  const {return RARITY_RARE;}

};

class DLL NounEnhancement_Reek : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_Reek();

	CharString GetName() const { return "Reek's Super Special Ship Mod";}
	ApplyType applyType() const { return AT_ATTACH;}
	bool IsUnique() const {return true;}
 
	Rarity rarity()  const {return RARITY_ULTRA_RARE;}

};

class DLL NounEnhancement_lol : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_lol();

	CharString GetName() const { return "OMGWTFSTATION!";}
	ApplyType applyType() const { return AT_ATTACH;}
	bool IsUnique() const {return true;}
 
	dword requirementFlags() const {return REQ_STATION;}
	Rarity rarity()  const {return RARITY_ULTRA_RARE;}

};

class DLL NounEnhancement_Nerf : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_Nerf();

	CharString GetName() const { return "Doran's Nerf Tank!";}
	ApplyType applyType() const { return AT_ATTACH;}
	bool IsUnique() const {return true;}
 
	Rarity rarity()  const {return RARITY_ULTRA_RARE;}

};
class DLL NounEnhancement_MaxPower : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_MaxPower();

	CharString GetName() const { return "Max Power!";}
	ApplyType applyType() const { return AT_ATTACH;}
	bool IsUnique() const {return true;}
 
	Rarity rarity()  const {return RARITY_ULTRA_RARE;}

};

#endif
